﻿$(function () { //document.Ready()

    //Handler para "MODIFICAR DATOS PERSONALES ALUMNOS"
    $('.panel-buttons input[name="btn-ModAlu"]').on({
        click: function () {
            var $self = $(this);
            var _NIE = $self.attr('data-nie');

            //Definimos las opciones y campo para el DIALOG MODAL
            var $dialogF = $.createDialogForm({
                width: '385',
                height: '600',
                title: 'Modificar datos personales del NIE: ' + _NIE,
                SaveButtonText: 'Guardar Cambios',
                msgTrySave: 'Guardando...',
                actionDataSubmit: '/OPAjax/UPT_SaveDatosPersonalesAlumno?NIE=' + _NIE,
                SaveDataSuccess: _AfterSaveDataAlumnoSuccess
            });

            //Hacemos unos "arreglos" algunos datos para poder ser presentados en el Form
            var sDUI = $('#alum-DUI').text();
            if (sDUI == '(No ingresado)')
                sDUI = '';
            var sCel = $('#alum-celular').text();
            if (sCel == '(No ingresado)')
                sCel = '';
            var bTrabaja = $('#alum-trabaja').text().substring(0,2);
            bTrabaja = (bTrabaja == 'Si' ? '1' : '0');
            var bHijos = $('#alum-thijos').text()
            bHijos = (bHijos == 'Si' ? '1' : '0');
            var sEPadece = $('#alum-enfpadece').text();
            if (sEPadece == '(No se ha especificado ninguna)')
                sEPadece = '';
            var sMPermanente = $('#alum-medpermanente').text();
            if (sMPermanente == '(No se ha especificado ninguna)')
                sMPermanente = '';

            var _DptoID = $('#alum-departamento').attr('data-id-dep');
            var _MunID = $('#alum-municipio').attr('data-id-mun');

            //Definimos los campos del DIALOG
            $dialogF.crearNuevoCampo({ IDField: 'Nombres', Label: "Alumno:", Text: $('#alum-nombres').text() + ' ' + $('#alum-apellidos').text(), ReadOnly: true });
            $dialogF.crearNuevoCampo({ IDField: 'DUI', Label: "DUI (Opcional):", Text: sDUI, MaxLenght: 10, MarcaAgua: 'XXXXXXXX-X', Validaciones: 'validate[custom[DUI]]' });
            $dialogF.crearNuevoCampo({ IDField: 'Dir', Label: "Dirección de casa del alumno:", Text: $('#alum-dir').text(), Width: '300px', MaxLenght: 150, Tipo: 'address', Validaciones: 'validate[required]' });
            $dialogF.crearNuevoCampo({ IDField: 'Departamento', Label: "Departamento:", Text: $('#alum-departamento').text(), Width: '150px', Validaciones: 'validate[required]' });
            $dialogF.crearNuevoCampo({ IDField: 'Municipio', Label: "Municipio:", Text: $('#alum-municipio').text(), Width: '315px', Validaciones: 'validate[required]' });
            $dialogF.crearNuevoCampo({ IDField: 'Telefono', Label: "Teléfono Fijo:", Text: $('#alum-telefono').text().substring(0,9), Width: '100px', MaxLenght: 9, MarcaAgua: 'XXXX-XXXX', Validaciones: 'validate[required, custom[phone]]' });
            $dialogF.crearNuevoCampo({ IDField: 'Celular', Label: "Celular del Alumno (Opcional):", Text: sCel, Width: '100px', MaxLenght: 9, MarcaAgua: 'XXXX-XXXX', Validaciones: 'validate[custom[phone]]' });
            $dialogF.crearNuevoCampo({ IDField: 'CorreoE', Label: "Correo Electrónico:", Text: $('#alum-correoe').text(), Width: '315px', MaxLenght: 35, Validaciones: 'validate[required, custom[email]]' });
            $dialogF.crearNuevoCampo({ IDField: 'MFamilia', Label: "No. de miembros en la familia:", Text: $('#alum-nofam').text(), Width: '60px', MaxLenght: 2, Validaciones: 'validate[required, custom[onlyNumberSp]]' });
            $dialogF.crearNuevoCampo({ IDField: 'Trabaja', Label: "¿Actualmente esta trabajando?:", Tipo: 'radio', Items: { '1': 'Si', '0': 'No' }, Validaciones: 'validate[required]', ItemSelectedValue: bTrabaja });
            $dialogF.crearNuevoCampo({ IDField: 'THijos', Label: "¿Tiene hijos?:", Tipo: 'radio', Items: { '1': 'Si', '0': 'No' }, Validaciones: 'validate[required]', ItemSelectedValue: bHijos });
            $dialogF.crearNuevoCampo({ IDField: 'EPadece', Label: "Enfermedades que padece:", Text: sEPadece , Width: '315px', MaxLenght: 250 });
            $dialogF.crearNuevoCampo({ IDField: 'MPermanente', Label: "Medicamento prescrito permanente:", Text: sMPermanente, Width: '315px', MaxLenght: 250 });

            //Creamos los campos ocultos
            $dialogF.crearNuevoCampo({ IDField: 'DptoID', Text: _DptoID, Hidden: true });
            $dialogF.crearNuevoCampo({ IDField: 'MunID', Text: _MunID, Hidden: true });
            $dialogF.find('form').first().validationEngine();
            $dialogF.dialog('open');

            //Aplicamos el control DatePicker a los campos fecha
            $('.datepick-control').applyFieldDatePicker({
                minDate: new Date('1975/01/01'),
                maxDate: new Date('2000/12/31')
            });

            //Establecemos el foco en el primera caja de texto
            var $fName = $('form input[name="field-FNacimiento"]');
            $fName.focus();
            $fName.select();

            $('#field-Departamento').attr('data-id-dep', _DptoID)

            //Establecemos el source del AutoComplete de "Departamento"
            var $dep = $('#field-Departamento');
            $dep.autocomplete({
                minLength: 1,
                delay: 100,
                source: function (request, response) {
                    $.ajax({
                        url: '/OPAjax/OP_FindDepartamento',
                        type: 'POST',
                        data: {text: request.term},
                        success: function (data) {
                            //Comprobamos que los datos se regresen correctamente al sistema
                            if (data.Success)
                                response($.map(data.Registros, function (item) {
                                    return {
                                        label: item.NOMBRE_DEP,
                                        value: item.ID_DEPARTAMENTO
                                    }
                                }));
                        }
                    });
                },
                select: function(event, ui) {
                    return false;
                },
                focus: function (event, ui) {
                    var $self = $(this);
                    $self.val(ui.item.label);
                    $self.attr('data-id-dep', ui.item.value);
                    $('#field-Municipio').prop('disabled', false);
                    return false;
                },
                change: function (event, ui) {
                    if (!ui.item) {
                        var $self = $(this);
                        var $m = $('#field-Municipio');
                        $self.val('');
                        $self.attr('data-id-dep', '');
                        $m.prop('disabled', true);
                        $m.val('');
                        return false;
                    } else 
                        $('#field-DptoID').val(ui.item.value);
                }
            });

            var $mun = $('#field-Municipio');
            $mun.autocomplete({
                minLength: 2,
                source: function (request, response) {
                    $.ajax({
                        url: '/OPAjax/OP_FindMunicipios',
                        type: 'POST',
                        data: {Dpto: $('#field-Departamento').attr('data-id-dep'), text: request.term },
                        success: function (data) {
                            //Comprobamos que los datos se regresen correctamente al sistema
                            if (data.Success)
                                response($.map(data.Registros, function (item) {
                                    return {
                                        label: item.NOMBRE_MUNICIPIO,
                                        value: item.ID_MUNICIPIO
                                    }
                                }));
                        }
                    });
                },
                select: function (event, ui) {
                    return false;
                },
                focus: function (event, ui) {
                    var $self = $(this);
                    $self.val(ui.item.label);
                    $self.attr('data-id-mun', ui.item.value);
                    return false;
                },
                change: function (event, ui) {
                    if (!ui.item) {
                        var $self = $(this);
                        $self.val('');
                        $self.attr('data-id-mun', '');
                        return false;
                    } else
                        $('#field-MunID').val(ui.item.value);
                }
            });
        }
    });


    //Handler para "DESACTIVAR ALUMNO"
    $('.panel-buttons input[name="btn-ElmAlu"]').on({
        click: function () {
            var $self = $(this);
            var _NIE = $self.attr('data-nie');

            //Verificamos que el usuario confirme la accion de desactiva al alumno
            if (!window.confirm('¿Esta completamente seguro que desea desactivar y eliminar al alumno con NIE: ' + _NIE + ' del sistema?'))
                return;

            //Ejecutamos la operacion de desactivar alumno
            $.SendDataAjax({
                LoadElementID: '#res-elmalu',
                URL: "/OPAjax/OP_DesactivarAlumno",
                Parametros: { NIE: _NIE },
                DisabledButtonID: "btn-ElmAlu",
                HabilitarButtonAfterSuccess: false,
                EventSuccess: function () {
                    alert('El alumno con NIE: ' + _NIE + ' se desactivo correctamente del sistema.');
                    location.reload();
                },
                EventError: function (msgError) {
                    alert(msgError);
                }
            });
        }
    });


    //Handler para "MODIFICAR DATOS RESPONSABLE ALUMNO"
    $('.panel-buttons input[name="btn-ModResp"]').on({
        click: function () {
            var $self = $(this);
            var _IDR = $self.attr('data-idr');

            //Definimos las opciones y campo para el DIALOG MODAL
            var $dialogResp = $.createDialogForm({
                width: '367',
                title: 'Modificar datos del Responsable No. ' + _IDR,
                SaveButtonText: 'Guardar Cambios',
                msgTrySave: 'Guardando...',
                actionDataSubmit: '/OPAjax/UPT_DatosResponsable?IDR=' + _IDR,
                SaveDataSuccess: _AfterSaveDataAlumnoSuccess
            });

            //Definimos los campos del DIALOG
            $dialogResp.crearNuevoCampo({ IDField: 'Nombres', Label: "Nombre del Responsable:", Text: $('#resp-nombres-' + _IDR).text() + ' ' + $('#resp-apellidos-' + _IDR).text(), ReadOnly: true });
            $dialogResp.crearNuevoCampo({ IDField: 'DUI', Label: "DUI:", Text: $('#resp-dui-' + _IDR).text(), MaxLenght: 10, MarcaAgua: 'XXXXXXXX-X', Validaciones: 'validate[required, custom[DUI]]' });
            $dialogResp.crearNuevoCampo({ IDField: 'Profesion', Label: "Profesión:", Text: $('#resp-profesion-' + _IDR).text(), Width: '315px', MaxLenght: 50, Validaciones: 'validate[required]' });
            $dialogResp.crearNuevoCampo({ IDField: 'Telefono', Label: "Teléfono de contacto del Responsable:", Text: $('#resp-telefono-' + _IDR).text(), Width: '100px', MaxLenght: 9, MarcaAgua: 'XXXX-XXXX', Validaciones: 'validate[required, custom[phone]]' });
            $dialogResp.crearNuevoCampo({ IDField: 'LTrabajo', Label: "Lugar o Empresa donde trabaja:", Text: $('#resp-ltrabajo-' + _IDR).text(), Width: '315px', MaxLenght: 150, Validaciones: 'validate[required]' });
            $dialogResp.crearNuevoCampo({ IDField: 'Dir', Label: "Dirección de trabajo:", Text: $('#resp-dirtra-' + _IDR).text(), Width: '300px', MaxLenght: 300, Tipo: 'address', Validaciones: 'validate[required]' });
            $dialogResp.crearNuevoCampo({ IDField: 'Correo', Label: "Correo Electrónico de contacto:", Text: $('#resp-correo-' + _IDR).text(), Width: '315px', MaxLenght: 35, Validaciones: 'validate[required, custom[email]]' });
            $dialogResp.find('form').first().validationEngine();
            $dialogResp.dialog('open');

            //Establecemos el foco en el primera caja de texto
            var $fName = $('form input[name="field-Nombres"]');
            $fName.focus();
            $fName.select();
        }
    });


    //Handler para "ELIMINAR RESPONSABLE DEL ALUMNO"
    $('.panel-buttons input[name="btn-ElmResp"]').on({
        click: function () {
            var $self = $(this);
            var _IDR = $self.attr('data-idr');
            var _NIE = $('.panel-buttons input[name="btn-ModAlu"]').attr('data-nie');

            //Verificamos que el usuario confirme la accion de desactiva al alumno
            if (!window.confirm('¿Esta completamente seguro que desea eliminar por completo a este responsable y eliminar la asociación que posee con el alumno?'))
                return;

            //Ejecutamos la operacion de desactivar alumno
            $.SendDataAjax({
                LoadElementID: '#res-elmresp-' + _IDR,
                URL: "/OPAjax/DEL_ResponsableAlumno",
                Parametros: { IDR: _IDR, NIE: _NIE },
                DisabledButtonID: "btn-ElmResp",
                HabilitarButtonAfterSuccess: false,
                EventSuccess: function () {
                    alert('El responsable del Alumno con No. de NIE: ' + _NIE + ' fue eliminado correctamente del sistema.');
                    _AfterSaveDataAlumnoSuccess();
                },
                EventError: function (msgError) {
                    alert(msgError);
                }
            });
        }
    });
});